home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / site-packages / impacket / dcerpc / epm.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2006-06-30  |  10KB  |  270 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. import array
  5. import struct
  6. from impacket import ImpactPacket
  7. from impacket import uuid
  8. import dcerpc
  9. import ndrutils
  10. import transport
  11. MSRPC_UUID_PORTMAP = '\x08\x83\xaf\xe1\x1f]\xc9\x11\x91\xa4\x08\x00+\x14\xa0\xfa\x03\x00\x00\x00'
  12.  
  13. class EPMLookupRequestHeader(ImpactPacket.Header):
  14.     OP_NUM = 2
  15.     __SIZE = 76
  16.     
  17.     def __init__(self, aBuffer = None, endianness = '<'):
  18.         ImpactPacket.Header.__init__(self, EPMLookupRequestHeader._EPMLookupRequestHeader__SIZE)
  19.         self.endianness = endianness
  20.         self.set_inquiry_type(0)
  21.         self.set_referent_id(1)
  22.         self.set_referent_id2(2)
  23.         self.set_max_entries(1)
  24.         if aBuffer:
  25.             self.load_header(aBuffer)
  26.         
  27.  
  28.     
  29.     def get_inquiry_type(self):
  30.         return self.get_long(0, self.endianness)
  31.  
  32.     
  33.     def set_inquiry_type(self, type):
  34.         self.set_long(0, type, self.endianness)
  35.  
  36.     
  37.     def get_referent_id(self):
  38.         return self.get_long(4, self.endianness)
  39.  
  40.     
  41.     def set_referent_id(self, id):
  42.         self.set_long(4, id, self.endianness)
  43.  
  44.     
  45.     def get_obj_binuuid(self):
  46.         return self.get_bytes().tolist()[8:8 + 16]
  47.  
  48.     
  49.     def set_obj_binuuid(self, binuuid):
  50.         if not 16 == len(binuuid):
  51.             raise AssertionError
  52.         self.get_bytes()[8:8 + 16] = array.array('B', binuuid)
  53.  
  54.     
  55.     def get_referent_id2(self):
  56.         return self.get_long(24, self.endianness)
  57.  
  58.     
  59.     def set_referent_id2(self, id):
  60.         self.set_long(24, id, self.endianness)
  61.  
  62.     
  63.     def get_if_binuuid(self):
  64.         return self.get_bytes().tolist()[28:28 + 20]
  65.  
  66.     
  67.     def set_if_binuuid(self, binuuid):
  68.         if not 20 == len(binuuid):
  69.             raise AssertionError
  70.         self.get_bytes()[28:28 + 20] = array.array('B', binuuid)
  71.  
  72.     
  73.     def get_version_option(self):
  74.         return self.get_long(48, self.endianness)
  75.  
  76.     
  77.     def set_version_option(self, opt):
  78.         self.set_long(48, opt, self.endianness)
  79.  
  80.     
  81.     def get_handle(self):
  82.         return self.get_bytes().tolist()[52:52 + 20]
  83.  
  84.     
  85.     def set_handle(self, handle):
  86.         if not 20 == len(handle):
  87.             raise AssertionError
  88.         self.get_bytes()[52:52 + 20] = array.array('B', handle)
  89.  
  90.     
  91.     def get_max_entries(self):
  92.         return self.get_long(72, self.endianness)
  93.  
  94.     
  95.     def set_max_entries(self, num):
  96.         self.set_long(72, num, self.endianness)
  97.  
  98.     
  99.     def get_header_size(self):
  100.         return EPMLookupRequestHeader._EPMLookupRequestHeader__SIZE
  101.  
  102.  
  103.  
  104. class EPMRespLookupRequestHeader(ImpactPacket.Header):
  105.     __SIZE = 28
  106.     
  107.     def __init__(self, aBuffer = None):
  108.         ImpactPacket.Header.__init__(self, EPMRespLookupRequestHeader._EPMRespLookupRequestHeader__SIZE)
  109.         if aBuffer:
  110.             self.load_header(aBuffer)
  111.         
  112.  
  113.     
  114.     def get_handle(self):
  115.         return self.get_bytes().tolist()[0:0 + 20]
  116.  
  117.     
  118.     def set_handle(self, handle):
  119.         if not 20 == len(handle):
  120.             raise AssertionError
  121.         self.get_bytes()[0:0 + 20] = array.array('B', handle)
  122.  
  123.     
  124.     def get_entries_num(self):
  125.         return self.get_long(20, '<')
  126.  
  127.     
  128.     def set_entries_num(self, num):
  129.         self.set_long(20, num, '<')
  130.  
  131.     
  132.     def get_entry(self):
  133.         return ndrutils.NDREntries(self.get_bytes().tostring()[24:-4])
  134.  
  135.     
  136.     def set_entry(self, entry):
  137.         raise Exception, 'method not implemented'
  138.  
  139.     
  140.     def get_status(self):
  141.         off = self.get_entry().get_entries_len()
  142.         return self.get_long(24 + off, '<')
  143.  
  144.     
  145.     def set_status(self, status):
  146.         off = self.get_entry().get_entries_len()
  147.         self.set_long(24 + off, status, '<')
  148.  
  149.     
  150.     def get_header_size(self):
  151.         entries_size = self.get_entry().get_entries_len()
  152.         return EPMRespLookupRequestHeader._EPMRespLookupRequestHeader__SIZE + entries_size
  153.  
  154.  
  155.  
  156. class DCERPCEpm:
  157.     endianness = '<'
  158.     
  159.     def __init__(self, dcerpc):
  160.         self._dcerpc = dcerpc
  161.  
  162.     
  163.     def portmap_dump(self, rpc_handle = '\x00' * 20):
  164.         if self.endianness == '>':
  165.             unpack = unpack
  166.             pack = pack
  167.             import impacket.structure
  168.             
  169.             try:
  170.                 rpc_handle = ''.join(map(chr, rpc_handle))
  171.             except:
  172.                 pass
  173.  
  174.             uuid = list(unpack('<LLHHBB6s', rpc_handle))
  175.             rpc_handle = pack('>LLHHBB6s', *uuid)
  176.         
  177.         lookup = EPMLookupRequestHeader(endianness = self.endianness)
  178.         lookup.set_handle(rpc_handle)
  179.         self._dcerpc.send(lookup)
  180.         data = self._dcerpc.recv()
  181.         resp = EPMRespLookupRequestHeader(data)
  182.         return resp
  183.  
  184.  
  185.  
  186. class EpmEntry:
  187.     
  188.     def __init__(self, uuid, version, annotation, objuuid, protocol, endpoint):
  189.         self._EpmEntry__uuid = uuid
  190.         self._EpmEntry__version = version
  191.         self._EpmEntry__annotation = annotation
  192.         self._EpmEntry__objuuid = objuuid
  193.         self._EpmEntry__protocol = protocol
  194.         self._EpmEntry__endpoint = endpoint
  195.  
  196.     
  197.     def getUUID(self):
  198.         return self._EpmEntry__uuid
  199.  
  200.     
  201.     def setUUID(self, uuid):
  202.         self._EpmEntry__uuid = uuid
  203.  
  204.     
  205.     def getProviderName(self):
  206.         return ndrutils.uuid_to_exe(uuid.string_to_bin(self.getUUID()) + struct.pack('<H', self.getVersion()))
  207.  
  208.     
  209.     def getVersion(self):
  210.         return self._EpmEntry__version
  211.  
  212.     
  213.     def setVersion(self, version):
  214.         self._EpmEntry__version = version
  215.  
  216.     
  217.     def isZeroObjUUID(self):
  218.         return self._EpmEntry__objuuid == '00000000-0000-0000-0000-000000000000'
  219.  
  220.     
  221.     def getObjUUID(self):
  222.         return self._EpmEntry__objuuid
  223.  
  224.     
  225.     def setObjUUID(self, objuuid):
  226.         self._EpmEntry__uuid = objuuid
  227.  
  228.     
  229.     def getAnnotation(self):
  230.         return self._EpmEntry__annotation
  231.  
  232.     
  233.     def setAnnotation(self, annotation):
  234.         self._EpmEntry__annotation = annotation
  235.  
  236.     
  237.     def getProtocol(self):
  238.         return self._EpmEntry__protocol
  239.  
  240.     
  241.     def setProtocol(self, protocol):
  242.         self._EpmEntry__protocol = protocol
  243.  
  244.     
  245.     def getEndpoint(self):
  246.         return self._EpmEntry__endpoint
  247.  
  248.     
  249.     def setEndpoint(self, endpoint):
  250.         self._EpmEntry__endpoint = endpoint
  251.  
  252.     
  253.     def __str__(self):
  254.         stringbinding = transport.DCERPCStringBindingCompose(self.getObjUUID(), self.getProtocol(), '', self.getEndpoint())
  255.         s = '['
  256.         if self.getAnnotation():
  257.             s += 'Annotation: "%s", ' % self.getAnnotation()
  258.         
  259.         s += 'UUID=%s, version %d, %s]' % (self.getUUID(), self.getVersion(), stringbinding)
  260.         return s
  261.  
  262.     
  263.     def __cmp__(self, o):
  264.         if self.getUUID() == o.getUUID() and self.getVersion() == o.getVersion() and self.getAnnotation() == o.getAnnotation() and self.getObjUUID() == o.getObjUUID() and self.getProtocol() == o.getProtocol() and self.getEndpoint() == o.getEndpoint():
  265.             return 0
  266.         else:
  267.             return -1
  268.  
  269.  
  270.